#include "ausfuehren.h"

PAINTSTRUCT		ps;
/*double robo1[6][2];
double robo1_n[6][2];
double robo2[10][2];
double robo2_n[10][2];
double hand[19][2];
double hand_n[19][2];
double schweisser[9][2];
double schweisser_n[9][2];
double blech1[100][2];
double blech1_n[100][2];
double blech2[110][2];
double blech2_n[110][2];
double feuer[8][2];
double feuer_n[8][2];
*/
Liste *robo1, *robo1_n, *robo2, *robo2_n, *hand, *hand_n, *schweisser, *schweisser_n,
      *blech1, *blech1_n, *blech2, *blech2_n, *feuer, *feuer_n;
int anz_p_b1, anz_p_b2, anz_p_s;
int h, z;
int l;
int r1;
int r2;
int r3;

void ausfuehren  (HWND hwnd, HDC hdc, RECT rect)
{
	Liste *runner;
	int i;

	z=0;					//Zählervariable für Schweißpunkte
	h=1;

	werte();				//Geometrie für Arme, Hand, Schweißgerät und Schweißlicht wird definiert
	
	blech1 = initListe();
	blech2 = initListe();			/* Initialisieren der Listen */
	anz_p_b1 = einlesen("blech1.csv", blech1);				//Geometrie der Bleche und Scheißpunkte werden aus Dateien eingelesen
	anz_p_b2 = einlesen("blech2.csv", blech2);
	anz_p_s =  einlesen("schweisspunkte.csv", blech2);

	robo1_n = initListe();
	runner = robo1;
	while (runner)		//Verschiebung des 1. Arms in die Ausgangsposition
	{
		addPunktxy(robo1_n, getPunkt(runner)->x+350, getPunkt(runner)->y+300);
		runner = getNext(runner);
	}
	robo2_n = initListe();
	runner = robo2;
	while (runner)		//Verschiebung des 2. Arms in die Ausgangsposition
	{
		addPunktxy(robo2_n, getPunkt(runner)->x + getElem(robo1_n, 5)->x,
				getPunkt(runner)->y + getElem(robo1_n,5)->y);
		runner = getNext(runner);
	}
	
	hand_n = initListe();
	runner = hand;
	while (runner)		//Verschiebung der Hand in den Werkzeugschrank
	{
		addPunktxy(hand_n, getPunkt(runner)->x+525, getPunkt(runner)->y+110);
		runner = getNext(runner);
	}

	schweisser_n = initListe();
	runner = schweisser;
	while (runner)		//Verschiebung des Schweißgeräts in den Werkzeugschrank
	{
		addPunktxy(schweisser_n, getPunkt(runner)->x+475, getPunkt(runner)->y+110);
		runner = getNext(runner);
	}

	blech1_n = initListe();
	runner = blech1;
	while (runner)		//Verschiebung des 1. Blechs auf Fließband 1
	{
		addPunktxy(blech1_n, getPunkt(runner)->x-100, getPunkt(runner)->y+150);
		runner = getNext(runner);
	}

	blech2_n = initListe();
	runner = blech2;
	while (runner)		//Verschiebung des 2. Blechs auf Fließband 2
	{
		addPunktxy(blech2_n, getPunkt(runner)->x-100, getPunkt(runner)->y+450);
		runner = getNext(runner);
	}

						Zeichne_Statische_Elemente(hdc);
						Zeichne_Dynamische_Elemente(hdc);
						Sleep(1000);

/* Start des Bewegungsvorgangs */
		
	bewegen(hwnd, hdc, rect, 525, 110, 0, 500, 2000, 1, 3);		//Robo fährt zur Hand - Blech 1 wird reingefahren
		Sleep(250);
	bewegen(hwnd, hdc, rect, 250, 150, 1, 350, 2000, 3, 3);		//Robo fährt zu Blech 1 auf Eingangsfließband
	
	bewegen(hwnd, hdc, rect, 800, 220, 2, 750, 2000, 0, 1);		//Robo bringt Blech 1 auf Schweißtisch - Blech 2 wird reingefahren
	
	bewegen(hwnd, hdc, rect, 250, 450, 1, 400, 2000, 3, 3);		//Robo fährt zu Blech 2 auf Eingangsfließband
	
	bewegen(hwnd, hdc, rect, 800, 220, 2, 750, 2000, 3, 0);		//Robo bringt Blech 2 auf Schweißtisch

	bewegen(hwnd, hdc, rect, 525, 110, 2, 500, 2000, 3, 3);		//Robo bringt Hand zurück
		Sleep(250);
	bewegen(hwnd, hdc, rect, 475, 110, 0, 500, 500, 3, 3);		//Robo holt sich Schweißgerät
		Sleep(250);

	for (i=0;i<anz_p_s;++i)					//Schweißpunkte werden gesetzt
	{
		bewegen(hwnd, hdc, rect, (int)getElem(blech2_n, anz_p_b2+i)->x,
				(int)getElem(blech2_n, anz_p_b2+i)->y, 3, 750, ((i==0)?2000:500), 3, 3);
		
		Zeichne_Feuer(hdc);
		++z;		//Zählervariable für Schweißpunkte
	}

	bewegen(hwnd, hdc, rect, 475, 110, 3, 500, 2000, 3, 3);		//Robo bringt Schweißgerät zurück
		Sleep(250);
	bewegen(hwnd, hdc, rect, 525, 110, 0, 500, 500, 3, 3);		//Robo holt sich Hand
		Sleep(250);
	bewegen(hwnd, hdc, rect, 800, 220, 1, 750, 2000, 3, 3);		//Robo fährt zu den Blechen
	
	bewegen(hwnd, hdc, rect, 650, 450, 2, 550, 2000, 0, 0);	//Robo bringt Bleche auf Ausgangsfließband
	
	bewegen(hwnd, hdc, rect, 250, 150, 1, 400, 2000, 2, 2);	//Robo fährt in die Mitte - Bleche fahren weg
	
}
